package cn.pugle.mianshi.ali20180206;

import java.util.HashMap;
import java.util.Map;

/**
 * 有一个字符串它的构成是词+空格的组合，如“北京 杭州 杭州 北京”， 要求输入一个匹配模式（简单的以字符来写），
 * 比如 aabb, 来判断该字符串是否符合该模式， 举个例子：
 * 1. pattern = "abba", str="北京 杭州 杭州 北京" 返回 true
 * 2. pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
 * 3. pattern = "baab", str="北京 杭州 杭州 北京" 返回 true
 *
 * @author tzp
 * @since 2018/2/6
 */
public class ABPattern {

    public static void main(String[] args) {
        //未进行输入合法性校验
        String pattern = args[0];//baab
        String str = args[1]; //"北京 杭州 杭州 北京";
        System.out.println(testABPattern(pattern, str));
    }

    /**
     * @param pattern 测试pattern
     * @param target 待测试字符串
     * @return 是否匹配
     */
    public static boolean testABPattern(String pattern, String target) {
        String[] targets = target.trim().split(" ");
        if (pattern.length() != targets.length) {
            return false;
        }

        //字典
        Map<Character, String> dic = new HashMap<>(targets.length);
        for (int i = 0; i < pattern.length(); i++) {
            char c = pattern.charAt(i); //当前要校验的pattern字符
            String s = targets[i]; //targets对应位的字符串

            String mappedStr = dic.get(c);
            if (mappedStr == null) {
                dic.put(c, s);
            } else if (!mappedStr.equals(s)) {
                return false;
            }
        }
        return true;
    }

}
